﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SistemaCenterQuimPost.UI.PostAdministrador
{
    public partial class frmInformarExtracciones : SistemaCenterQuimPost.Plantillas.frmPlantillaHijo
    {
        //------------------ATRIBUTOS-----------------------

        DataSet2 centerQuimDs;
        DataSet2TableAdapters.ExtraccionesxCajaTableAdapter extraccionesDa;
        DataSet2TableAdapters.CajasTableAdapter cajaDa;

        //----------------CONSTRUCTORES---------------------

        public frmInformarExtracciones()
        {
            InitializeComponent();
            centerQuimDs = new DataSet2();
            extraccionesDa = new DataSet2TableAdapters.ExtraccionesxCajaTableAdapter();
            cajaDa = new DataSet2TableAdapters.CajasTableAdapter();
        }

        //---------------ESTADOS---------------------

        private void frmInformarExtracciones_Load(object sender, EventArgs e)
        {
            lblError.Visible = false; //como es un formulario sin estado, se setea este atributo acá.

        }


        //---------------METODOS VARIOS---------------

        private void btnBusVentas_Click(object sender, EventArgs e)
        {
            mostrarExtracciones();

        }

        private void limpiarDatos()
        {
            dgvExtracciones.Rows.Clear();

        }

        private void mostrarExtracciones()
        {
            if (cboTurno.Text == "")
            {
                try
                {
                    // este bloque sierve para rellener el datagride sin tener en cuenta el turno
                    cajaDa.FillByEntreFechas(centerQuimDs.Cajas, DateTime .Parse ( dtpFechaDesde.Value.ToShortDateString ()), dtpFechaHasta.Value);

                    limpiarDatos();

                    if (centerQuimDs.Cajas.Rows.Count == 0)
                    {
                        //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                        MessageBox.Show("No se encontraron extracciones para la fecha establecida.", "ELIMINAR VENTAS", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        
                     }else
                    {
                        foreach (DataRow row in centerQuimDs.Cajas.Rows)
                        {
                            dgvExtracciones.Rows.Add(Convert.ToDateTime(row[1]).ToString("d"), Convert.ToDouble (row[5]));
                        }

                        calcularTotalPeriodo();
                    }
                    
                }
                
                catch (Exception ex)
                {
                    //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                    MessageBox.Show("La conexión a la base de datos no fué exitosa.\n\n Comuniquese con su desarrollador para solucionar el problema.\n\n" + ex.Message, "ERROR GRAVE - ACCESO A BASE DE DATO", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    limpiarDatos();

                }

            }
            else
            {
                try
                {
                    //este bloque sirve para rellenar el datagride teniendo en cuenta el turno
                    cajaDa.FillByEntreFechasyTurno(centerQuimDs.Cajas, dtpFechaDesde.Value, dtpFechaHasta.Value, cboTurno.Text.Substring(0, 1));

                    limpiarDatos();

                    if (centerQuimDs.Cajas.Rows.Count == 0)
                    {
                        //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                        MessageBox.Show("No se encontraron extracciones para la fecha establecida.", "ELIMINAR VENTAS", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        lblError.Visible = false; //Este atributo se controla en este lugar, ya que es un formulario sin estado.

                    }
                    else
                    {

                        foreach (DataRow row in centerQuimDs.Cajas.Rows)
                        {
                            dgvExtracciones.Rows.Add(Convert.ToDateTime(row[1]).ToString("d"), Convert.ToDouble(row[5]));
                        }

                        calcularTotalPeriodo();

                    }
                }
                
                catch (Exception ex)
                {
                    //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                    MessageBox.Show("La conexión a la base de datos no fué exitosa.\n\n Comuniquese con su desarrollador para solucionar el problema.\n\n" + ex.Message, "ERROR GRAVE - ACCESO A BASE DE DATO", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    limpiarDatos();

                }

            }
        }

        private void calcularTotalPeriodo()
        {
            double totalPeriodo = 0; //Se inicializa el total del periodo.

            foreach(DataGridViewRow row in dgvExtracciones.Rows)
            {

                totalPeriodo += Convert.ToDouble(row.Cells[1].Value);

            }

            lblExtPeriodoValor.Text = Math.Round(totalPeriodo, 2).ToString();

        }

    }


}
